/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.Ufes.exeSwing.Presenter;

import edu.Ufes.exeSwing.Collection.DiretorRegionalCollection;
import edu.Ufes.exeSwing.Model.Diretor;
import edu.Ufes.exeSwing.Persistence.DiretorRegionalPersistence;
import edu.Ufes.exeSwing.View.DefinirRegionalView;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Iterator;
import java.util.TreeSet;
import javax.swing.JOptionPane;

/**
 *
 * @author bhetynnacatalunha
 */
public class DefinirRegionalPresenter {

    DefinirRegionalView definirView;
    Diretor diretor;

    public DefinirRegionalPresenter() {
        diretor = null;
        definirView = new DefinirRegionalView();

        definirView.getBtnFechar().addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                definirView.dispose();
            }
        });

        definirView.getBtnDefinir().addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                definirRegional(diretor);
            }
        });

        carregaDiretores();
        definirView.setVisible(true);
    }

    public DefinirRegionalPresenter(Diretor pDiretor) {
        diretor = pDiretor;
        definirView = new DefinirRegionalView();

        definirView.getBtnFechar().addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                definirView.dispose();
            }
        });

        definirView.getBtnDefinir().addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                definirRegional(diretor);
            }
        });

        carregaDiretores();
        definirView.getCbmDiretores().setSelectedItem(diretor.getCPF() + " - " + diretor.getNome());
        definirView.getCbmRegiao().setSelectedItem(diretor.getRegiao());
        definirView.setVisible(true);
    }

    private void definirRegional(Diretor diretor) {
        if (this.diretor == null) {
            if (definirView.getCbmDiretores().getSelectedItem().equals("")) {
                JOptionPane.showMessageDialog(definirView, "Selecione um Diretor");
            } else {
                String cpf[] = definirView.getCbmDiretores().getSelectedItem().toString().split(" - ");
                DiretorRegionalCollection diretores = new DiretorRegionalCollection(new DiretorRegionalPersistence());
                Diretor diretor1 = diretores.getUmDiretorRegional(cpf[0]);
                Diretor diretorAuxiliar = diretor1;
                diretores.excluirDiretor(diretor1);
                String regiao = definirView.getCbmRegiao().getSelectedItem().toString();
                diretor1.setRegiao(regiao);
                diretores.incluirDiretor(diretorAuxiliar);
                JOptionPane.showMessageDialog(definirView, "Definição feita com Sucesso!");
                definirView.dispose();
            }
        } else {
            if (definirView.getCbmDiretores().getSelectedItem().equals("")) {
                JOptionPane.showMessageDialog(definirView, "Selecione um Diretor");
            } else {
                String cpf[] = definirView.getCbmDiretores().getSelectedItem().toString().split(" - ");
                DiretorRegionalCollection diretores = new DiretorRegionalCollection(new DiretorRegionalPersistence());
                Diretor diretor1 = diretores.getUmDiretorRegional(cpf[0]);
                Diretor diretorAuxiliar = diretor1;
                diretores.excluirDiretor(diretor1);
                String regiao = definirView.getCbmRegiao().getSelectedItem().toString();
                diretor1.setRegiao(regiao);
                diretores.incluirDiretor(diretorAuxiliar);
                JOptionPane.showMessageDialog(definirView, "Definição feita com Sucesso!");
                definirView.dispose();
            }
        }
    }

    private void carregaDiretores() {
        DiretorRegionalCollection diretorcollection = new DiretorRegionalCollection(new DiretorRegionalPersistence());
        TreeSet<Diretor> pDiretores = diretorcollection.getTodosDiretoresRegionais();
        Iterator<Diretor> itDiretores = pDiretores.iterator();
        Diretor d;
        definirView.getCbmDiretores().addItem("");
        while (itDiretores.hasNext()) {
            d = itDiretores.next();
            definirView.getCbmDiretores().addItem(d.getCPF() + " - " + d.getNome());
        }
    }
}
